/*
 * CotacaoParser.java
 *
 * Created on 5 de Dezembro de 2006, 10:25
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package bvp.util;

import bvp.data.Cotacao;
import java.io.File;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.text.SimpleAttributeSet;

/**
 *
 * @author rpanachi
 */
public class CotacaoParser
{
    private String page;
    private String ativo;
    private bvp.util.Properties props;
    
    /** Creates a new instance of CotacaoParser */
    public CotacaoParser(String codAtivo)
    {               
        ativo = codAtivo;
       
        try
        {
            props = Properties.getInstance();
            String url = props.getProperty("urlcotacaobovespa").replace("*ativo", codAtivo);
            page = PageHandler.getPage(url).replace("&nbsp;", " ");
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }            
    }      
    
    public Cotacao ParseCotacao()
    {
        Cotacao retorno = new Cotacao();

        try
        {
            SimpleDateFormat data;

            retorno.setCodAtivo(this.ativo);
            
            data = new SimpleDateFormat("dd/MM/yyyy");                 
            retorno.setDatCotacao(data.parse(this.getDataCotacao()));
            
            data = new SimpleDateFormat("hh:mm:ss");
            retorno.setHorCotacao(data.parse(this.getHoraCotacao()));
            
            retorno.setValCotacao(Double.parseDouble(this.getValorCotacao().replace("R$ ","").replace(",", ".")));
            
            retorno.setVarCotacao(Double.parseDouble(this.getVariacaoCotacao().replace("%", "").replace(",",".").replace("+","")));
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
            retorno = null;
        }                
        
        return retorno;
    }
    
    private String getField(String field)
    {
        String result = null;
        
        try
        {
            String regex = props.getProperty(field);
            Matcher m = Pattern.compile(regex).matcher(page);
            
            //dispara a procupa pela e.r.
            if (m.find())
            {                   
                result = m.group();
            }
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
        
        return result;                
    }
    
    public String getHoraCotacao()
    {
        return getField("regex.hora");    
    }
    
    public String getDataCotacao()
    {
        return getField("regex.data");     
    }
    
    public String getValorCotacao()
    {
        return getField("regex.valor");
    }  
    
    public String getVariacaoCotacao()
    {
        return getField("regex.variacao");
    }      
    
    public String getQuantidadeNegocios()
    {
        return getField("regex.quantidade");
    }         
}
